home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib02.dsk / LOW SCORE II.bas < prev    next >
BASIC Source File  |  2023-02-26  |  8KB  |  138 lines

  1. 2  HOME : VTAB 10: HTAB 12: PRINT "LOW SCORE II": HTAB 8: PRINT "COPYRIGHT (C) 1980 BY": HTAB 5: PRINT "MICRO-SPARC, INC. LINCOLN MA 01773"
  2. 3  VTAB 20: PRINT "UNAUTHORIZED COPYING IS ILLEGAL AND IS": PRINT  TAB( 5)"STRICTLY PROHIBITED.": PRINT : INPUT "PRESS RETURN TO CONTINUE ";XO$
  3. 4  HOME 
  4. 10  REM  ******************************
  5. 11  REM  **     LOW SCORE II         **
  6. 12  REM  **    BY RUDY A. GUY        **
  7. 13  REM  **  COPYRIGHT (C) 1980 BY   **
  8. 14  REM  **   MICRO-SPARC, INC.      **
  9. 15  REM  **   LINCOLN MA  01773      **
  10. 16  REM  ******************************
  11. 35  PRINT  CHR$(4)"BLOAD LOW SCORE.B": HIMEM: 8192: POKE 232,0: POKE 233,64
  12. 40  TEXT : DIM B(12),SC(10,3),X(15),Y(15)
  13. 45  TEXT : HOME : PRINT "+++++++++++++++++++++++++++++++++++++++++                                      ++                                      ++                                      +++++++++++++++++++++++++++++++++++++++++"
  14. 50  VTAB 2:A$ = "LOW SCORE II": GOSUB 670:A$ = "BY: RUDY A. GUY": GOSUB 670:A$ = "30-AUG-80": GOSUB 670
  15. 55  GOTO 330
  16. 60  GOSUB 80
  17. 65  IF Q = 1  THEN  HOME : PRINT : FLASH :A$ = "NO MOVES AVAILABLE": GOSUB 670: FOR W = 1 TO 30:X =  PEEK( -16336): NEXT : FOR W = 1 TO 2500: NEXT : NORMAL :Q = 0: POP : GOTO 520
  18. 70  IF C = 1  AND PL$(J) = "APPLE II"  THEN  ON T -1 GOSUB 120,125,135,145,160,175,195,215,240,265,295
  19. 75  RETURN 
  20. 80  REM  * CHECK FOR MOVES *
  21. 85 B(0) = 1
  22. 90  FOR K = 1 TO 12: FOR L = 0 TO 12
  23. 95  IF L = K  THEN 105
  24. 100  IF B(K) +B(L) = 2  AND L +K = T  THEN  RETURN 
  25. 105  NEXT : NEXT 
  26. 110 Q = 1: RETURN 
  27. 115  REM  * COMPUTER'S MOVE *
  28. 120 A(1) = 2:A(2) = 0: RETURN 
  29. 125  IF B(1) +B(2) = 2  THEN A(1) = 1:A(2) = 2: RETURN 
  30. 130 A(1) = 3:A(2) = 0: RETURN 
  31. 135  IF B(1) +B(3) = 2  THEN A(1) = 3:A(2) = 1: RETURN 
  32. 140 A(1) = 4:A(2) = 0: RETURN 
  33. 145  IF B(2) +B(3) = 2  THEN A(1) = 2:A(2) = 3: RETURN 
  34. 150  IF B(4) +B(1) = 2  THEN A(1) = 4:A(2) = 1: RETURN 
  35. 155 A(1) = 5:A(2) = 0: RETURN 
  36. 160  IF B(4) +B(2) = 2  THEN A(1) = 4:A(2) = 2: RETURN 
  37. 165  IF B(5) +B(1) = 2  THEN A(1) = 5:A(2) = 1: RETURN 
  38. 170 A(1) = 6:A(2) = 0: RETURN 
  39. 175  IF B(3) +B(4) = 2  THEN A(1) = 3:A(2) = 4: RETURN 
  40. 180  IF B(5) +B(2) = 2  THEN A(1) = 5:A(2) = 2: RETURN 
  41. 185  IF B(6) +B(1) = 2  THEN A(1) = 6:A(2) = 1: RETURN 
  42. 190 A(1) = 7:A(2) = 0: RETURN 
  43. 195  IF B(5) +B(3) = 2  THEN A(1) = 5:A(2) = 3: RETURN 
  44. 200  IF B(6) +B(2) = 2  THEN A(1) = 6:A(2) = 2: RETURN 
  45. 205  IF B(7) +B(1) = 2  THEN A(1) = 7:A(2) = 1: RETURN 
  46. 210 A(1) = 8:A(2) = 0: RETURN 
  47. 215  IF B(5) +B(4) = 2  THEN A(1) = 5:A(2) = 4: RETURN 
  48. 220  IF B(6) +B(3) = 2  THEN A(1) = 6:A(2) = 3: RETURN 
  49. 225  IF B(7) +B(2) = 2  THEN A(1) = 7:A(2) = 2: RETURN 
  50. 230  IF B(8) +B(1) = 2  THEN A(1) = 8:A(2) = 1: RETURN 
  51. 235 A(1) = 9:A(2) = 0: RETURN 
  52. 240  IF B(6) +B(4) = 2  THEN A(1) = 6:A(2) = 4: RETURN 
  53. 245  IF B(7) +B(3) = 2  THEN A(1) = 7:A(2) = 3: RETURN 
  54. 250  IF B(8) +B(2) = 2  THEN A(1) = 8:A(2) = 2: RETURN 
  55. 255  IF B(9) +B(1) = 2  THEN A(1) = 9:A(2) = 1: RETURN 
  56. 260 A(1) = 10:A(2) = 0: RETURN 
  57. 265  IF B(6) +B(5) = 2  THEN A(1) = 6:A(2) = 5: RETURN 
  58. 270  IF B(10) +B(1) = 2  THEN A(1) = 10:A(2) = 1: RETURN 
  59. 275  IF B(9) +B(2) = 2  THEN A(1) = 9:A(2) = 2: RETURN 
  60. 280  IF B(8) +B(3) = 2  THEN A(1) = 8:A(2) = 3: RETURN 
  61. 285  IF B(7) +B(4) = 2  THEN A(1) = 7:A(2) = 4: RETURN 
  62. 290 A(1) = 11:A(2) = 0: RETURN 
  63. 295  IF B(11) +B(1) = 2  THEN A(1) = 11:A(2) = 1: RETURN 
  64. 300  IF B(10) +B(2) = 2  THEN A(1) = 10:A(2) = 2: RETURN 
  65. 305  IF B(9) +B(3) = 2  THEN A(1) = 9:A(2) = 3: RETURN 
  66. 310  IF B(8) +B(4) = 2  THEN A(1) = 8:A(2) = 4: RETURN 
  67. 315  IF B(7) +B(5) = 2  THEN A(1) = 7:A(2) = 5: RETURN 
  68. 320 A(1) = 12:A(2) = 0: RETURN 
  69. 325  REM  * SET UP *
  70. 330  POKE 34,5: HOME : VTAB 12: PRINT "DO YOU WANT TO PLAY THE COMPUTER ?";: GET P$: IF P$ = "Y"  THEN C = 1
  71. 335 P = 2: VTAB 15: PRINT : PRINT "ENTER YOUR NAME:": VTAB 18
  72. 340  IF C = 1  THEN  FOR I = 1 TO P -1: GOTO 350
  73. 345  FOR I = 1 TO P
  74. 350  PRINT "PLAYER NO. ";I;" ";: INPUT PL$(I): NEXT 
  75. 355  IF C = 1  THEN PL$(P) = "APPLE II"
  76. 360  PRINT : INPUT "NUMBER OF ROUNDS (MAX.10) :";R$:R =  VAL(R$): IF R <1  OR R >10  THEN  HOME : GOTO 360
  77. 365  FOR I = 1 TO R: FOR J = 1 TO P:SC(I,J) = 0: NEXT J,I
  78. 370  FOR W = 1 TO 12:B(W) = 1: NEXT : RESTORE 
  79. 375  REM  ** SET SCREEN **
  80. 380  TEXT : HOME : HGR : ROT= 0: SCALE= 1: HCOLOR= 3
  81. 385  HPLOT 0,0 TO 259,0 TO 259,40 TO 0,40 TO 0,0: HPLOT 43,0 TO 43,40: HPLOT 86,0 TO 86,40: HPLOT 129,0 TO 129,40: HPLOT 172,0 TO 172,40: HPLOT 215,0 TO 215,40
  82. 390  HPLOT 0,50 TO 259,50 TO 259,90 TO 0,90 TO 0,50: HPLOT 43,50 TO 43,90: HPLOT 86,50 TO 86,90: HPLOT 129,50 TO 129,90: HPLOT 172,50 TO 172,90: HPLOT 215,50 TO 215,90
  83. 395  FOR W = 1 TO 15: READ X(W): NEXT : FOR W = 1 TO 15: READ Y(W): NEXT 
  84. 400  FOR W = 1 TO 9: DRAW W AT X(W),Y(W): NEXT 
  85. 405  DRAW 1 AT X(10),Y(10): DRAW 10 AT X(11),Y(11): DRAW 1 AT X(12),Y(12): DRAW 1 AT X(13),Y(13): DRAW 1 AT X(14),Y(14): DRAW 2 AT X(15),Y(15)
  86. 410  HPLOT 0,100 TO 259,100 TO 259,159 TO 0,159 TO 0,100
  87. 415  IF Q = 1  THEN  RETURN 
  88. 420  FOR I = 1 TO R: FOR J = 1 TO P
  89. 425  POKE 34,20: HOME 
  90. 430  PRINT PL$(J)"'S TURN": POKE 34,21: HOME 
  91. 435  IF C = 1  AND PL$(J) = "APPLE II"  THEN 445
  92. 440  VTAB 24: HTAB 5: INVERSE : PRINT "PRESS ANY KEY TO ROLL DICE.";: GET A$: NORMAL : HOME 
  93. 445 D(1) =  INT(( RND(1) *6) +1):D(2) =  INT(( RND(1) *6) +1):T = D(1) +D(2)
  94. 450  DRAW (D(1) +11) AT 100,120: DRAW (D(2) +11) AT 120,120: GOSUB 60
  95. 455  IF C = 1  AND PL$(J) = "APPLE II"  THEN  FOR W = 1 TO 3000: NEXT : GOTO 470
  96. 460  HOME : PRINT : INPUT "SELECT NUMBERS TO BE FLIPPED (A,B) :";A$(1),A$(2)
  97. 465 A(1) =  VAL(A$(1)):A(2) =  VAL(A$(2))
  98. 470  IF A(1) <1  OR A(1) >T  THEN  GOSUB 615: GOTO 460: REM  *** ERROR ROUTINE
  99. 475  IF A(1) +A(2) < >T  THEN  GOSUB 615: GOTO 460
  100. 480  IF B(A(1)) = 1  THEN B(A(1)) = 0: GOTO 490
  101. 485  GOSUB 615: GOTO 460
  102. 490  IF A(2) = 0  THEN S(J) = S(J) +T: GOSUB 620: GOSUB 625: HOME : GOTO 430
  103. 495  IF B(A(2)) = 1  THEN B(A(2)) = 0: GOTO 505
  104. 500 B(A(1)) = 1: GOSUB 615: GOTO 460
  105. 505 S(J) = S(J) +T: GOSUB 625: GOSUB 620: HOME : IF S(J) = 78  THEN 515
  106. 510  GOTO 430
  107. 515  IF S(J) = 78  THEN S(J) = 156
  108. 520 SC(I,J) = SC(I,J) +S(J):S(J) = 0
  109. 525  FOR W = 1 TO R:TS = TS +SC(W,J): NEXT 
  110. 530  HOME : IF I >1  THEN  PRINT PL$(J)"'S SCORE AFTER ";I;" ROUNDS :";TS:TS = 0: GOTO 540
  111. 535  HOME : PRINT PL$(J)"'S SCORE AFTER ";I;" ROUND  :";TS:TS = 0
  112. 540  FOR W = 1 TO 3000: NEXT : POKE 34,20: HOME 
  113. 545  IF I = R  AND J = P  THEN 555
  114. 550 Q = 1: GOSUB 370:Q = 0
  115. 555  NEXT : NEXT 
  116. 560  REM  * DETERMINE FINAL SCORE *
  117. 565  FOR J = 1 TO P: FOR I = 1 TO R:S(J) = S(J) +SC(I,J): NEXT : NEXT 
  118. 570  FOR I = 1 TO P: FOR J = 1 TO P -1: LET S = S(J): LET S1 = S(J +1):PL$ = PL$(J):A$ = PL$(J +1): IF S <S1  THEN 580
  119. 575 S(J) = S1:S(J +1) = S:PL$(J) = A$:PL$(J +1) = PL$
  120. 580  NEXT : NEXT 
  121. 585  TEXT : HOME :A$ = "FINAL TOTALS": GOSUB 670: PRINT "========================================"
  122. 590  FOR I = 1 TO P: IF I = 1  AND S(I) <S(I +1)  THEN  INVERSE 
  123. 595  PRINT I;". ";PL$(I);: PRINT  TAB( 35);S(I): IF I = 1  THEN  NORMAL 
  124. 600  NEXT 
  125. 605  VTAB 24: PRINT "ANOTHER GAME ?";: GET YN$: IF YN$ = "N"  THEN  TEXT : HOME : END 
  126. 610  CLEAR : GOTO 40
  127. 615  FLASH : PRINT "ENTRY ERROR!": FOR W = 1 TO 1500: NEXT : NORMAL : RETURN 
  128. 620  HCOLOR= 4: DRAW (D(1) +11) AT 100,120: DRAW (D(2) +11) AT 120,120: HCOLOR= 3: RETURN 
  129. 625  HCOLOR= 4: FOR W = 1 TO 2
  130. 630  IF A(W) >0  AND A(W) <10  THEN  DRAW A(W) AT X(A(W)),Y(A(W)): GOTO 655
  131. 635  IF A(W) = 0  THEN 655
  132. 640  IF A(W) = 10  THEN  DRAW 1 AT X(10),Y(10): DRAW 10 AT X(11),Y(11): GOTO 655
  133. 645  IF A(W) = 11  THEN  DRAW 1 AT X(12),Y(12): DRAW 1 AT X(13),Y(13): GOTO 655
  134. 650  IF A(W) = 12  THEN  DRAW 1 AT X(14),Y(14): DRAW 2 AT X(15),Y(15): GOTO 655
  135. 655 : NEXT : HCOLOR= 3: RETURN 
  136. 660  DATA  20,60,100,140,185,225,20,60,100,135,145,180,190,220,230,10,10,10,10,10,10,60,60,60,60,60,60,60,60,60
  137. 665  REM  * CENTERING ROUTINE *
  138. 670  HTAB 20 - LEN(A$)/2: PRINT A$: RETURN